/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import dao.MoradorDAO;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import model.Morador;

/**
 *
 * @author Wagner Segato dos Santos
 */
public class MoradorBean {

    // Atributos
    private Morador morador;
    private List<Morador> lista;

    /** Creates a new instance of UsuarioBean */
    public MoradorBean() throws Exception {
        this.morador = new Morador();
        this.lista = MoradorDAO.getListaMorador();
    }

    public Morador getMorador() {
        return morador;
    }

    public void setMorador(Morador morador) {
        this.morador = morador;
    }

    public List<Morador> getLista() {
        return lista;
    }

    /** Preparar formulário para inserir dados no banco  */
    public String prepararInserir() {
        morador = new Morador();
        return "form?faces-redirect=true";
    }

    /** Preparar registro para atualizar os dados do banco */
    public String prepararAlterar() {
        if (morador != null) {
          //  morador = selecionado;
            return "form?faces-redirect=true";
        } else {
            erro("Selecione um registro na tabela");
            return "list";
        }
    }

    /** Preparar registro para excluir os dados do banco */
    public String prepararExcluir() {
        if (morador != null) {
           // morador = selecionado;
            alerta("Deseja realmente excluir esse registro?");
            return "list";
        } else {
            morador = new Morador();
            erro("Selecione um registro na tabela");
            return "list";
        }
    }

    /** Excluir registro do banco */
    public String excluir() {
        try {
            if (morador.getId() != null) {
                MoradorDAO.excluir(morador);
                lista = MoradorDAO.getListaMorador();
                info("Sucesso ao excluir registro");
            }
            return "list";
        } catch (Exception e) {
            morador = new Morador();
            erro("Erro: " + e.getMessage());
            return "list";
        }
    }

    /** Salvar registro no banco */
    public String salvar() {
        try {
            if (morador.getId() == null) {
                MoradorDAO.inserir(morador);
                morador = new Morador(); // Limpa os dados do último objeto selecionado
            } else {
                MoradorDAO.atualizar(morador);
                
               // morador = selecionado; // Mantem os dados do último objeto selecionado
            }
            lista = MoradorDAO.getListaMorador(); // Atualiza a lista de usuários
            info("Sucesso ao salvar registro");
            return "form";
        } catch (Exception e) {
            erro("Erro: " + e.getMessage());
            return "form";
        }
    }

    /** Exibir mensagens no sistema */
    private static void exibirMsg(String summary, String detail, FacesMessage.Severity severity) {
        FacesMessage facesMessage = new FacesMessage(severity, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, facesMessage);
    }

    /** Preencher mensagem de informação */
    public static void info(String detail) {
        String summary = "";
        exibirMsg(summary, detail, FacesMessage.SEVERITY_INFO);
    }

    /** Preencher mensagem de erro */
    public static void erro(String detail) {
        String summary = "";
        exibirMsg(summary, detail, FacesMessage.SEVERITY_ERROR);
    }

    /** Preencher mensagem de alerta */
    public static void alerta(String detail) {
        String summary = "";
        exibirMsg(summary, detail, FacesMessage.SEVERITY_WARN);
    }
}
